论文盘点:基于图卷积GNN的多目标跟踪算法解析
©PaperWeekly 原创 · 作者|黄飘
学校|华中科技大学硕士
研究方向|多目标跟踪
EDA_GNN
论文标题: Graph Neural Based End-to-end Data Association Framework for Online Multiple-Object Tracking
论文来源:CVPR 2020
论文链接:https://arxiv.org/abs/1907.05315
代码链接:https://github.com/peizhaoli05/EDA_GNN
从算法的示意图可以看到,作者通过一个孪生网络求得了观测目标 j 与当前目标轨迹 i 的表观相似度,然后取目标轨迹的历史位置为输入,通过 LSTM 得到预测的位置,计算该位置与观测目标位置的运动相似度,两个相似度结合构建相似度矩阵。
至此,所有目标轨迹与观测目标的相似度构成了一个二部图,以目标和观测信息作为节点,相似度作为边权,表观特征和位置信息拼接作为节点属性特征。
然后基于消息传递机制,作者通过 GNN 的网络框架实现对节点特征的更新:
在训练的时候,损失函数由三部分组成:
论文标题:Deep association: End-to-end graph-based learning for multiple object tracking with conv-graph neural network
论文来源:ICMR 2019
论文链接:https://dl.acm.org/doi/pdf/10.1145/3323873.3325010
这里的 DAN 并非我之前提过的 DAN,其整体流程跟 EDA_GNN 基本一样:
都是先提取表观和运动特征,由此构建网络图,通过 GNN 得到最终的关联矩阵。首先相似度矩阵怎这里用的是 IOU 信息:
IOU 后面的部分是帧间差,如果目标存在跨帧链接,那么间隔越久,相似度越低。不过 DAN 与 EDA_GNN 不同的是,并没有将图结构构建为二部图,而是将跟踪节点和观测节点统一为节点集合,因此邻接矩阵/相似度矩阵就变成了 (m+n)x(m+N),这就是最基础的 GNN 网络结构了。所以节点特征的更新就是:
损失函数为 Graph Loss,即对正负链接边权的交叉熵损失函数:
结果如下:
论文标题:Graph Networks for Multiple Object Tracking
论文来源:WACV 2020
论文链接:http://openaccess.thecvf.com/content_WACV_2020/papers/Li_Graph_Networks_for_Multiple_Object_Tracking_WACV_2020_paper.pdf
代码链接:https://github.com/yinizhizhu/GNMOT
可以看到,GNMOT 的不同在于表观和运动部分分别采用了 GNN 网络,二者结合得到的是相似度矩阵,由此输入数据关联部分。关于 GNN 网络的更新流程,作者设计了 4 步:
其中第一次边和节点的更新都是通过两层 FC 进行更新的。第三次的全局更新这里,作者引入了一个全局变量 u,先计算所有节点的特征均值和边权均值,再通过两层 FC 进行更新。这里的 u 会在出现在所有更新过程中,作为一个调节量。
最后一次的边权更新则是在两层 FC 之后再加了一层 softmax 层。
论文标题:Learning a Neural Solver for Multiple Object Tracking
论文来源:CVPR 2020
论文链接:https://arxiv.org/abs/1912.07515
代码链接:https://github.com/selflein/GraphNN-Multi-Object-Tracking
我之前也介绍过这篇文章,但是之前不懂 GNN,所以只能做搬运工,现在学习了 GNN,所以就再次分析一下。首先是图的构建,图节点由所有帧的所有目标构成,直接将观测信息作为节点,没有跟踪,只有关联。
节点属性特征由训练得到的表观特征和几何特征构成,其中几何特征为位置和形状。并且定义表观特征距离用欧氏距离度量,几何特征距离用下面的公式度量:
时间特征自然就是帧数,这几个特征通过一个 MLP 网络得到最终的特征表达。
边的连接自然就是跨帧节点存在连接,而同一帧节点不存在连接,边权的设定就是上面的距离度量。也就是说,这相当于一个端到端的离线跟踪框架。
消息传递机制中,对于边权的更新和节点的更新方式如下:
上面这个图从左往右是不同时间帧的节点,这里举的例子是一个相邻三帧的节点连接。原始的更新机制中,对于节点的更新会将周围边的影响通过求和的方式聚合。而这里作者考虑了时间因素,将时间分为了过去和未来两个部分:
然后通过拼接的方式聚合,最后利用 MLP 结构实现特征降维。
可以看下消息传递代数的影响:
论文标题:Graph Neural Network for 3D Multi-Object Tracking with Multi-Feature Learning
论文来源:CVPR 2020
论文链接:https://arxiv.org/abs/2006.07327
代码链接:https://github.com/xinshuoweng/GNN3DMOT
从这篇开始,接下来的全是这个组的文章。这篇文章所涉及的算法框架很完整,值得一读:
对于边权/相似度矩阵的确定,作者尝试了三种方式,余弦距离、欧氏距离还有网络回归,即上图中的 Edge Regression:
当然这个也是边权更新的机制,而对于节点 消息传递机制,作者也设计了四种:
方法很明了,我就不细讲了,可以看到聚合方式都是求和。另外由算法框架示意图可知,每次消息传递都会计算关联矩阵的损失,那么为什么会采用 batch triplet loss呢?
作者把关联矩阵中的每条边权看作了 N 对匹配,三元组损失中,首先选取相邻帧中的一对连接 i,j,然后分别选取不同 id 的两帧节点 r,s,计算上述损失。即要保证不同帧间不同 id 身份的边权的最小距离越大越好。而对于相似度损失,则是采用了两种交叉熵损失:
论文标题:Joint 3D Tracking and Forecasting with Graph Neural Network and Diversity Sampling
论文链接:https://arxiv.org/abs/2003.07847
代码链接:https://github.com/xinshuoweng/GNNTrkForecast
这篇论文里面,作者通过 GNN 将 3D MOT 和轨迹预测结合在一起了。其中对于 GNN 网络的构建以及关联矩阵的获取跟之前的论文几乎一致,具体我们就不介绍了:
那么 3D MOT 分支实际上就是 GNN 模型中的一部分,是根据 GNN 的边权矩阵进行数据关联:
效果如下:
JDMOT_GNN
论文标题:Joint Detection and Multi-Object Tracking with Graph Neural Networks
论文链接:https://arxiv.org/abs/2006.13164
也许是看到最近联合检测和跟踪的框架很热门,作者团队又给加入了 GNN 模块,所以我们简单提一下:
最开始的表观和运动特征部分就不提了,一个是 LSTM/MLP 回归,一个是 Darknet53 回归得到的。图的构建依旧是以检测框和目标作为节点,节点特征的更新则是:
这里面要注意的是两个 head,其中检测 head 的是根据各节点特征利用 MLP 降维得到用于分类和回归的特征。而数据关联 head 则是边权,它的确定是依据节点特征的差异,通过三层全连接得到的:
最终效果如下:
参考文献
更多阅读
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
📝 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。